<%@page import="java.util.logging.Level"%>
<%@page import="java.util.logging.Logger"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.enums.TipoDespliegueEnum"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.Cls_Validaciones"%>
<%@page import="pck_tramitedocu.pck_src.pck_pojos.Cls_documento_extension"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.cls_utilitarios"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.cls_nodo"%>
<%@page import="pck_tramitedocu.pck_src.pck_pojos.Cls_menu"%>
<%@page import="pck_tramitedocu.pck_src.pck_pojos.Cls_Trabajador"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.Cls_Parametros"%>
<%@page import="pck_tramitedocu.pck_src.pck_utiles.Cls_Parametros"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.HashMap"%>
<%@page import="java.util.List"%>
<%@page import="pck_tramitedocu.pck_web.svl_gestion_facade_web"%>
<%@page language="java" contentType="text/html; charset=ISO-8859-1" session="true"%>
<%@page import="java.util.ArrayList"%>

<%
            String codigo, contrasena;
            codigo = request.getParameter("usuario").trim();
            contrasena = request.getParameter("contrasena").trim();
            int opt_cargo = Integer.parseInt(request.getParameter("trabajadorCargo").trim().split("===")[0]);
            boolean band = false;
            if (codigo.length() == 8) {
                try {
                    for (int i = 0; i < codigo.length(); i++) {
                        Integer.parseInt("" + codigo.charAt(i));
                    }
                    band = true;
                } catch (NumberFormatException ex) {
                    HttpSession sen = request.getSession();
                    sen.setAttribute(Cls_Parametros.MENSAJE_RETORNO, "Usuario incorrecto");
                    response.sendRedirect("login.htm");
                    Logger.getLogger("validarlogin.jsp").log(Level.SEVERE, null, ex);
                }
            }

            Map<String, Object> map = new HashMap<String, Object>();
            ArrayList<Cls_documento_extension> extesiones = new ArrayList<Cls_documento_extension>();
            map.put(Cls_Parametros.Map_DNI, codigo);
            map.put(Cls_Parametros.Map_CONTRASENA, contrasena);
            Cls_Trabajador usuario = null;
            Object usuariosValidacion = null;
            if (band) {
                usuariosValidacion = svl_gestion_facade_web.getFacade().validarUsuario(map);
                if (usuariosValidacion != null) {
                    if (usuariosValidacion instanceof Cls_Trabajador) {
                        usuario = (Cls_Trabajador) usuariosValidacion;
                    } else {
                        if (!((ArrayList<Cls_Trabajador>) usuariosValidacion).isEmpty()) {
                            usuario = ((ArrayList<Cls_Trabajador>) usuariosValidacion).get(opt_cargo);
                            usuario.setTiene_acceso_logueo(Boolean.TRUE);
                        }
                    }
                }
            }
            if (usuario != null && usuario.getTiene_acceso_logueo()) {
                if (Cls_Validaciones.elUsuarioIsJefe(usuario)) {
                    usuario.setCodigo(usuario.getCodigo_area());
                }
                if (request.getContextPath().indexOf(TipoDespliegueEnum.PRODUCCION.getDominio()) != -1) {
                    usuario.setTipoDespliegue(TipoDespliegueEnum.PRODUCCION);
                } else if (request.getContextPath().indexOf(TipoDespliegueEnum.PRE_PRODUCCION.getDominio()) != -1) {
                    usuario.setTipoDespliegue(TipoDespliegueEnum.PRE_PRODUCCION);
                }
                HttpSession sen = request.getSession();
                sen.setAttribute("usuarioObjeto", usuario);
                sen.setAttribute("usuarioObjetoList", extesiones);
                List<Cls_menu> menu = svl_gestion_facade_web.getFacade().obtenerMenuUsuario(codigo);
                List<cls_nodo> nodos = cls_utilitarios.converToArray(menu);
                sen.setAttribute("menu", cls_utilitarios.converToString(nodos));
                if (Cls_Validaciones.elUsuarioIsJefe(usuario)) {
                    sen.setAttribute(Cls_Parametros.Session_OBJETO_POSIBILIDAD_ENVIO,
                            cls_utilitarios.getPosibilidadesMap(svl_gestion_facade_web.getFacade().
                            obtenerPosibilidadEnvioFacade(usuario.getCodigo_area())));
                    sen.setAttribute(Cls_Parametros.Session_OBJETO_POSIBILIDAD_PROYECCION,
                            cls_utilitarios.getPosibilidadesMap(svl_gestion_facade_web.getFacade().
                            obtenerPosibilidadProyeccionFacade(usuario.getCodigo_area())));
                    sen.setAttribute(Cls_Parametros.Session_OBJETO_POSIBILIDAD_VISTO_BUENO,
                            cls_utilitarios.getPosibilidadesMap(svl_gestion_facade_web.getFacade().
                            obtenerPosibilidadVistoBuenoFacade(usuario.getCodigo_area())));
                }
                response.sendRedirect("inicio.htm");
            } else {
                HttpSession sen = request.getSession();
                sen.setAttribute(Cls_Parametros.MENSAJE_RETORNO, usuario == null || usuario.getMessage_logueo().length() == 0 ? "Datos Incorrectos" : usuario.getMessage_logueo().toLowerCase());
                response.sendRedirect("login.htm");
            }
%>